//
// Created by zhupi on 2024/10/18.
//

#ifndef DEMO2_PYTHON_TEST_H
#define DEMO2_PYTHON_TEST_H



#include <QTextEdit>
#include <QString>
#include <sstream>
#include <iostream>

// 解决 Python 和 Qt 的 slots 冲突
#ifdef slots
#undef slots
#endif

#include <Python.h>  // 包含 Python.h 头文件

#ifdef QT_NO_KEYWORDS
#define slots Q_SLOTS
#endif
//
//class PythonEnvironment {
//public:
//    PythonEnvironment(QTextEdit* textEdit) : textEdit(textEdit) {
//        // 初始化 Python 解释器
//
//        // 初始化 Python 输出重定向
////        const char* redirectScript =
////                "import sys\n"
////                "import io\n"
////                "sys.stdout = io.StringIO()\n";  // 使用 StringIO 作为 Python 输出缓冲区
////        PyRun_SimpleString(redirectScript);
//    }
//
//    void Initial() {
//        initializePython();
//    }
//
//
//    void initializePython() {
//        std::cout << "Checking if Python is initialized..." << std::endl;
//
//        // 检查 Python 头文件和库版本
//        std::cout << "Compiled with Python version: " << PY_VERSION << std::endl;
//
//        // 检查是否初始化
//        if (!Py_IsInitialized()) {
//            std::cout << "Python is not initialized. Initializing now..." << std::endl;
//            Py_InitializeEx(0);
//
//            if (Py_IsInitialized()) {
//                std::cout << "Python initialized successfully." << std::endl;
//            } else {
//                std::cerr << "Failed to initialize Python!" << std::endl;
//            }
//        } else {
//            std::cout << "Python is already initialized." << std::endl;
//        }
//    }
//
//    ~PythonEnvironment() {
//        // 关闭 Python 解释器
////        Py_Finalize();
//    }
//
//    void executeScript(const QString& script) {
//        // 将 QString 转换为标准的 C 字符串
//        QByteArray scriptBytes = script.toUtf8();
//        const char* pythonScript = scriptBytes.constData();
//
//        // 执行 Python 脚本
//        PyObject* pyMain = PyImport_AddModule("__main__");
//        PyObject* pyGlobalDict = PyModule_GetDict(pyMain);
//        PyObject* pyLocalDict = PyDict_New();
//
//        PyObject* pyResult = PyRun_String(pythonScript, Py_file_input, pyGlobalDict, pyLocalDict);
//
//        // 获取并显示 Python 输出
//        if (pyResult != nullptr) {
//            const char* getOutputScript = "sys.stdout.getvalue()";  // 获取输出
//            PyObject* pyOutput = PyRun_String(getOutputScript, Py_eval_input, pyGlobalDict, pyLocalDict);
//            if (pyOutput && PyUnicode_Check(pyOutput)) {
//                const char* outputCStr = PyUnicode_AsUTF8(pyOutput);
//                QString output = QString::fromUtf8(outputCStr);
//                textEdit->append(output);  // 将输出追加到 QTextEdit 中
//            }
//            Py_DECREF(pyOutput);
//            Py_DECREF(pyResult);
//        }
//
//        // 重置输出缓冲区
//        const char* resetScript = "sys.stdout = io.StringIO()";
//        PyRun_SimpleString(resetScript);
//
//        Py_DECREF(pyLocalDict);
//    }
//
//private:
//    QTextEdit* textEdit;
//};
//

#endif //DEMO2_PYTHON_TEST_H
